#pragma once
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <errno.h>
#include <assert.h>
#include <stdlib.h>

typedef int DATA_TYPE;

typedef struct node
{
	DATA_TYPE Info;
	struct node* next;
}NODE;


void SListPushBack(NODE** pphead, DATA_TYPE num);
void SListPushFront(NODE** pphead, DATA_TYPE num);
void SListPopBack(NODE** pps);
void SListPopFront(NODE** pphead);
void SListPrint(NODE* cur);
NODE* SListFind(NODE* phead, DATA_TYPE num);
void SListInsert(NODE** pphead, NODE* pos, DATA_TYPE num);
void SListErase(NODE** pphead, NODE* pos);
void SListEraseAfter(NODE** pphead, NODE* pos);

void reverse_list(NODE** pphead);
NODE* reverse_list2(NODE* head);
NODE* merge_two_list(NODE* l1, NODE* l2);
NODE* separate_list(NODE* phead, int num);